﻿//------------------------------
// Author: Yang Shulin
// Version: V1.0
// DateTime: 2011-2-28
//------------------------------

namespace Ysl.Data.SqlBuilder
{
    /// <summary>
    /// 组织Sql语句接口
    /// </summary>
    public interface ISqlBuilder
    {
        #region 组织任意多条件的Select查询语句
        /// <summary>
        /// 组织任意多条件的Select查询语句
        /// </summary>
        /// <param name="tableName">数据表名称</param>
        /// <param name="top">返回前top条数据记录（-1 表示符合条件的全部记录）</param>
        /// <param name="fields">需要得到的字段名</param>
        /// <param name="ascField">排序字段名称（默认按主键排序）</param>
        /// <param name="orderType">排序的类型，0 为升序，1 为降序（默认）</param>
        /// <param name="strWhere">查询条件，不用加where关键字，如："[Field1] = @Field1 and [Field2] = @Field2 and [Field3] > @Field3"</param>
        /// <returns>返回string类型</returns>
        string Select(string tableName, int top, string fields, string ascField, int orderType, string strWhere);
        #endregion

        #region 组织任意多条件的分页查询SelectPager语句
        /// <summary>
        /// 组织任意多条件的分页查询SelectPager语句
        /// </summary>
        /// <param name="tableName">数据表名称</param>
        /// <param name="fields">需要得到的字段名</param>
        /// <param name="pageSize">分页大小</param>
        /// <param name="currentPage">当前第几页</param>
        /// <param name="ascField">排序的字段名，默认为按主键排序</param>
        /// <param name="orderType">排序的类型 (0为升序,1为降序)</param>
        /// <param name="strWhere">查询条件，不用加where关键字，如："[Field1] = @Field1 and [Field2] = @Field2 and [Field3] > @Field3"</param>
        /// <returns>返回string类型</returns>
        string SelectPage(string tableName, string fields, int pageSize, int currentPage, string ascField, int orderType, string strWhere);
        #endregion
    }
}
